#ifndef __ML_COMMAND_H__
#define __ML_COMMAND_H__
#include <functional>
#include "resourcemanager.h"
#include <queue>
class SceneNode;

namespace Category {
	enum Type {
		None = 0,
		Scene = 1 << 0,
		PlayerAircraft = 1 << 1,
		AlliedAircraft = 1 << 2,
		EnemyAircraft = 1 << 3
	};
}

struct Command
{
	std::function<void(SceneNode&, sf::Time)> action;
	unsigned int                              category;
};


class CommandQueue {
public:
	CommandQueue() = default;
	void push(const Command& command);
	Command pop();
	bool isEmpty() const;

private:
	std::queue<Command> mQueue;
};
#endif